package library.common.util;

import android.content.Context;
import android.content.SharedPreferences;

import java.util.Set;

/**
 * @author Created by qiang.hou on 2018/3/14.
 * @version 1.0
 */
public class SharedUtils {
    private static SharedPreferences pref;// 文件操作对象

    /**
     * 从共享文件中获取整型数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static int getInt(String key, int defValue) {
        if (pref != null) {
            return pref.getInt(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * 从共享文件中获取浮点型数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static float getFloat(String key, float defValue) {
        if (pref != null) {
            return pref.getFloat(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * @param key      表签名
     * @param defValue 值
     */
    public static long getLong(String key, long defValue) {
        if (pref != null) {
            return pref.getLong(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * 从共享文件中获取字符串
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static String getString(String key, String defValue) {
        if (pref != null) {
            return pref.getString(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * 从共享文件中获取boolean数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static boolean getBoolean(String key, boolean defValue) {
        if (pref != null) {
            return pref.getBoolean(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * 从共享文件中获取字符串集合数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static Set<String> getStringSet(String key, Set<String> defValue) {
        if (pref != null) {
            return pref.getStringSet(key, defValue);
        } else {
            return defValue;
        }
    }

    /**
     * 保存整型数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static void setInt(String key, int defValue) {
        if (pref != null) {
            pref.edit().putInt(key, defValue).apply();
        }
    }

    /**
     * 保存浮点型数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static void setFloat(String key, Float defValue) {
        if (pref != null) {
            pref.edit().putFloat(key, defValue).apply();
        }
    }

    /**
     * @param key      表签名
     * @param defValue 值
     */
    public static void setLong(String key, long defValue) {
        if (pref != null) {
            pref.edit().putLong(key, defValue).apply();
        }
    }

    /**
     * 保存字符串数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static void setString(String key, String defValue) {
        if (pref != null) {
            pref.edit().putString(key, defValue).apply();
        }
    }

    /**
     * 保存boolean数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static void setBoolean(String key, boolean defValue) {
        if (pref != null) {
            pref.edit().putBoolean(key, defValue).apply();
        }
    }

    /**
     * 保存字符串集合数据
     *
     * @param key      表签名
     * @param defValue 值
     */
    public static void setStringSet(String key, Set<String> defValue) {
        if (pref != null) {
            pref.edit().putStringSet(key, defValue).apply();
        }
    }

    /**
     * 设置上下文，并且初始化文件操作对象。在Application中调用，只需要调用一次
     *
     * @param context Context
     * @param name    name of SharedPreferences
     */
    public static void initInstance(Context context, String name) {
        pref = context.getSharedPreferences(name, 0); // 文件操作对象
    }
}
